﻿/*
 Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.dialog.add("colordialog",
    function(t) {
        function n() {
            f.getById(o).removeStyle("background-color");
            p.getContentElement("picker", "selectedColor").setValue("");
            j && j.removeAttribute("aria-selected");
            j = null
        }

        function u(a) {
            var a = a.data.getTarget(), b;
            if ("td" == a.getName() && (b = a.getChild(0).getHtml()))
                j = a, j.setAttribute("aria-selected", !0), p.getContentElement("picker", "selectedColor").setValue(b)
        }

        function y(a) {
            for (var a = a.replace(/^#/, ""), b = 0, c = []; 2 >= b; b++) c[b] = parseInt(a.substr(2 * b, 2), 16);
            return"#" +
                (165 <= 0.2126 * c[0] + 0.7152 * c[1] + 0.0722 * c[2] ? "000" : "fff")
        }

        function v(a) {
            !a.name && (a = new CKEDITOR.event(a));
            var b = !/mouse/.test(a.name), c = a.data.getTarget(), e;
            if ("td" == c.getName() && (e = c.getChild(0).getHtml()))
                q(a), b ? g = c : w = c, b && (c.setStyle("border-color", y(e)), c.setStyle("border-style", "dotted")),
                    f.getById(k).setStyle("background-color", e), f.getById(l).setHtml(e)
        }

        function q(a) {
            if (a = !/mouse/.test(a.name) && g) {
                var b = a.getChild(0).getHtml();
                a.setStyle("border-color", b);
                a.setStyle("border-style", "solid")
            }
            !g &&
                !w &&
                (f.getById(k).removeStyle("background-color"), f.getById(l).setHtml("&nbsp;"))
        }

        function z(a) {
            var b = a.data, c = b.getTarget(), e = b.getKeystroke(), d = "rtl" == t.lang.dir;
            switch (e) {
            case 38:
                if (a = c.getParent().getPrevious()) a = a.getChild([c.getIndex()]), a.focus();
                b.preventDefault();
                break;
            case 40:
                if (a = c.getParent().getNext()) (a = a.getChild([c.getIndex()])) && 1 == a.type && a.focus();
                b.preventDefault();
                break;
            case 32:
            case 13:
                u(a);
                b.preventDefault();
                break;
            case d ? 37 : 39:
                if (a = c.getNext()) 1 == a.type && (a.focus(), b.preventDefault(!0));
                else if (a =
                    c.getParent().getNext()) if ((a = a.getChild([0])) && 1 == a.type) a.focus(), b.preventDefault(!0);
                break;
            case d ? 39 : 37:
                if (a = c.getPrevious()) a.focus(), b.preventDefault(!0);
                else if (a = c.getParent().getPrevious()) a = a.getLast(), a.focus(), b.preventDefault(!0)
            }
        }

        var r = CKEDITOR.dom.element,
            f = CKEDITOR.document,
            h = t.lang.colordialog,
            p,
            x = { type: "html", html: "&nbsp;" },
            j,
            g,
            w,
            m = function(a) { return CKEDITOR.tools.getNextId() + "_" + a },
            k = m("hicolor"),
            l = m("hicolortext"),
            o = m("selhicolor"),
            i;
        (function() {
            function a(a, d) {
                for (var s =
                        a;
                    s < a + 3;
                    s++) {
                    var e = new r(i.$.insertRow(-1));
                    e.setAttribute("role", "row");
                    for (var f = d; f < d + 3; f++) for (var g = 0; 6 > g; g++) b(e.$, "#" + c[f] + c[g] + c[s])
                }
            }

            function b(a, c) {
                var b = new r(a.insertCell(-1));
                b.setAttribute("class", "ColorCell");
                b.setAttribute("tabIndex", -1);
                b.setAttribute("role", "gridcell");
                b.on("keydown", z);
                b.on("click", u);
                b.on("focus", v);
                b.on("blur", q);
                b.setStyle("background-color", c);
                b.setStyle("border", "1px solid " + c);
                b.setStyle("width", "14px");
                b.setStyle("height", "14px");
                var d = m("color_table_cell");
                b.setAttribute("aria-labelledby", d);
                b.append(CKEDITOR.dom.element.createFromHtml(
                    '<span id="' + d + '" class="cke_voice_label">' + c + "</span>",
                    CKEDITOR.document))
            }

            i = CKEDITOR.dom.element.createFromHtml('<table tabIndex="-1" aria-label="' +
                h.options +
                '" role="grid" style="border-collapse:separate;" cellspacing="0"><caption class="cke_voice_label">' +
                h.options +
                '</caption><tbody role="presentation"></tbody></table>');
            i.on("mouseover", v);
            i.on("mouseout", q);
            var c = "00 33 66 99 cc ff".split(" ");
            a(0, 0);
            a(3, 0);
            a(0,
                3);
            a(3, 3);
            var e = new r(i.$.insertRow(-1));
            e.setAttribute("role", "row");
            for (var d = 0; 6 > d; d++) b(e.$, "#" + c[d] + c[d] + c[d]);
            for (d = 0; 12 > d; d++) b(e.$, "#000000")
        })();
        return{
            title: h.title,
            minWidth: 360,
            minHeight: 220,
            onLoad: function() { p = this },
            onHide: function() {
                n();
                var a = g.getChild(0).getHtml();
                g.setStyle("border-color", a);
                g.setStyle("border-style", "solid");
                f.getById(k).removeStyle("background-color");
                f.getById(l).setHtml("&nbsp;");
                g = null
            },
            contents: [
                {
                    id: "picker",
                    label: h.title,
                    accessKey: "I",
                    elements: [
                        {
                            type: "hbox",
                            padding: 0,
                            widths: ["70%", "10%", "30%"],
                            children: [
                                {
                                    type: "html",
                                    html: "<div></div>",
                                    onLoad: function() { CKEDITOR.document.getById(this.domId).append(i) },
                                    focus: function() {
                                        (g || this.getElement().getElementsByTag("td").getItem(0)).focus()
                                    }
                                }, x, {
                                    type: "vbox",
                                    padding: 0,
                                    widths: ["70%", "5%", "25%"],
                                    children: [
                                        {
                                            type: "html",
                                            html: "<span>" +
                                                h.highlight +
                                                '</span>\t\t\t\t\t\t\t\t\t\t\t\t<div id="' +
                                                k +
                                                '" style="border: 1px solid; height: 74px; width: 74px;"></div>\t\t\t\t\t\t\t\t\t\t\t\t<div id="' +
                                                l +
                                                '">&nbsp;</div><span>' +
                                                h.selected +
                                                '</span>\t\t\t\t\t\t\t\t\t\t\t\t<div id="' +
                                                o +
                                                '" style="border: 1px solid; height: 20px; width: 74px;"></div>'
                                        }, {
                                            type: "text",
                                            label: h.selected,
                                            labelStyle: "display:none",
                                            id: "selectedColor",
                                            style: "width: 74px",
                                            onChange: function() {
                                                try {
                                                    f.getById(o).setStyle("background-color", this.getValue())
                                                } catch (a) {
                                                    n()
                                                }
                                            }
                                        }, x,
                                        {
                                            type: "button",
                                            id: "clear",
                                            style: "margin-top: 5px",
                                            label: h.clear,
                                            onClick: n
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    });
